//
//  Extension+NSDate.swift
//  LZTWeibo
//
//  Created by Yin jianxun on 16/8/15.
//  Copyright © 2016年 YinJianxun. All rights reserved.
//

 /*
    使用NSDateFormatter 和NSCalendar 
    对于iOS而言 性能消耗很大 最好不要重复创建或者销毁
    - 解决方法：
        Swift中:创建一个全局的对应对象，抽成一个extension类
        OC中:利用单例
 */

import UIKit

//时间格式化
let df = NSDateFormatter()

//通过日历类进行 判断 - 是否是今天 昨天 或者 其他
let calendar = NSCalendar.currentCalendar()

extension NSDate {
    
    //class修饰的方法为 类方法
    //计算微博日期
    class func getSinaDate(createdAt: String) -> NSDate {
        
        //设置格式
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        //指定本地话
        df.locale = NSLocale(localeIdentifier: "en_US")
        
        //微博时间
        let sinaDate = df.dateFromString(createdAt)!
     
        return sinaDate
    }
    
    //得到微博时间的格式化后的字符串
    var sinaDateDicription: String {
        
        //判断是否是今年
        let isThisYear = sinaIsThisYear(self)
        
        if isThisYear {
            //是今年
            
            if calendar.isDateInToday(self) {
                
                //今天
                //拿到秒数：当前时间和sinaDate的差值
                let s = Int(NSDate().timeIntervalSinceDate(self))
                //判断 是否是刚刚 或者 多少分钟前
                if s < 60 {
                    return "刚刚"
                }else if s >= 60 && s < 3600 {
                    return "\(s / 60)分钟前"
                }else {
                    return "\(s / 3600)小时前"
                }
                
            }else if calendar.isDateInYesterday(self) {
                
                //昨天 显示：昨天 HH：mm
                df.dateFormat = "昨天 HH:mm"
            }else {
                
                //其他 显示：MM月dd日 HH:mm
                df.dateFormat = "MM月dd日 HH:mm"
            }
            
        }else {
            //不是今年的话 重新定义显示格式
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
        }
        return df.stringFromDate(self)
    }
    
    //判断是 今年
    func sinaIsThisYear(sinaDate: NSDate) -> Bool{
        
        //设置格式 year
        df.dateFormat = "yyyy"
        //指定本地话
        df.locale = NSLocale(localeIdentifier: "en_US")
        
        let sinaTimeStr = df.stringFromDate(sinaDate)
        
        //当前时间
        let currentTimeStr = df.stringFromDate(NSDate())
        
        return sinaTimeStr == currentTimeStr
    }
    
}
